import * as getI18 from './i18.cjs'
//第一步  获取中文
var dictionary = getI18.dictionary
new getI18.File().walkDir(
	getI18.filePath,
	function (data, pathStr) {
		/**该文件是否样式文件 */
		let isStyleFile =
			pathStr.indexOf('/styles/') !== -1 ||
			pathStr.indexOf('/style/') !== -1 ||
			pathStr.indexOf('style.ts') !== -1
		let keyStr = pathStr.slice(getI18.filePath.length + 1)
		console.log(pathStr, 'pathStr------------')
		if (!isStyleFile && !!data) {
			var lines = data.replaceAll('\t', '').split('\n')
			lines.forEach((element, line) => {
				let temObj = {
					line: line + 1 + '', // 所在行数
					// prevLineContent: line > 0 ? lines[line - 1] : '', // 所在上一行数内容
					// lineContent: element, // 所在行数内容
					// nextLineContent: line + 1 < lines.length ? lines[line + 1] : '', // 所在下一行数内容
					position: keyStr, // 文件
					// translate: '', // 需要替换的
				}
				// 如果是注释责跳过
				let isZhuShi = !!element.match(getI18.regNotes)
				if (isZhuShi) {
					// 该行仅仅含有 *号 并且非*开头的，并且没有 "/* 和*/"的情况，认为不是注释，认为是html文本中的*号
					if (
						element.indexOf('*') !== -1 &&
						element[1] &&
						element[1].indexOf('*') === -1 &&
						element.indexOf('/*') === -1 &&
						element.indexOf('*/') === -1
					) {
					} else {
						//注释的情况
						return
					}
				}
				//  1匹配 '文字'  js 需进行"文字"->t("文字")
				/*
            1. title: '首页',  js
            1. tip = '您有' + num + '条待审批消息,请查看'  js
            1. if (~modalType.indexOf('编辑')) {  js
            1. Modal.alert('请选择所属社区') js
            1. msg: '性别不能为空', js
            1. value = '社区' js
            1.let resultList = ['失败', '成功'] js
            1.split(',原因') js
            1. { label: '亲属', value: '亲属' }, js
            1. <>{title || '文字'} </>   js
            */
				let matchLine1 = element.match(/'([^']*[\u4e00-\u9fa5]+[^']*)'/g)
				if (!!matchLine1) {
					console.log(matchLine1, 'matchLine======11111111111=====')
					// todo 匹配多个时
					matchLine1.forEach((item, index, arr) => {
						let value = item.replaceAll("'", '')
						dictionary.set(
							keyStr + (line + 1) + index,
							Object.assign(
								{
									value: value,
									translate: `t('${value}')`,
								},
								temObj
							)
						)
						dictionary.setSub(item.slice(1, -1), value)
					})
					return
				}
				// 2匹配 "文字"
				// 基本见于标签内的文本 view需进行"文字"->{t("文字")}
				let matchLine2 = element.match(/"([^">]*[\u4e00-\u9fa5]+[^"]*)"/g)
				if (!!matchLine2) {
					console.log(matchLine2, 'matchLine=====222222======')
					// dictionary.set(matchLine2[0].replaceAll('"', ""));
					matchLine2.forEach((item, index) => {
						let value = item.replaceAll('"', '')
						dictionary.set(
							keyStr + (line + 1) + index,
							Object.assign(
								{
									value: value,
									translate: `t('${value}')`,
								},
								temObj
							)
						)
						dictionary.setSub(item.slice(1, -1), value)
					})
					return
				}

				// 3匹配 <div>文字</div>   view需进行"文字"->{t("文字")}
				/*可能有  以下情况
				1. <div>文字</div>    view
				2.<>{companyInfo} 版权所有</> view
				3. <>{title || '文字'} </>   已过滤
				4.<>{value === '0' ? '女' : '男'}</> 已过滤
				*/
				// let matchLine3 = element.match(/>(.*[\u4e00-\u9fa5]+.*)</g)
				let matchLine3 = element.match(/>(.*[\u4e00-\u9fa5]+.*)</g)
				if (!!matchLine3) {
					matchLine3.forEach((item, index, arr) => {
						console.log(item, 'matchLine===333333========')

						let keyWord = item.slice(1, -1)
						let value = arr[index].slice(1, -1)
						//有变量的不处理 例如 <span>{aa}和{bb}张{cc}</span>
						if (arr[index].indexOf('}>') !== -1) {
							let _index = arr[index].indexOf('}>')
							keyWord = item.slice(_index + 2, -1)
							value = value.slice(_index + 1, value.length)
							if (value.indexOf('{') !== -1 && value.indexOf('}') !== -1) {
								return
							}
						} else {
							if (value.indexOf('{') !== -1 && value.indexOf('}') !== -1) {
								return
							}
						}
						dictionary.set(
							keyStr + (line + 1) + index,
							Object.assign(
								{
									value: value,
									translate: `t('${value}')`,
								},
								temObj
							)
						)
						dictionary.setSub(keyWord, value)
					})
					return
				}
				let matchLine4 = element.match(/[\u4e00-\u9fa5].*[\u4e00-\u9fa5]/g)
				if (!!matchLine4) {
					console.log(matchLine4, 'matchLine======444444444=====')
					matchLine4.forEach((item, index) => {
						let value = item.trim()
						if (value.indexOf('{') !== -1 && value.indexOf('}') !== -1) {
						} else {
							dictionary.set(
								keyStr + (line + 1) + index,
								Object.assign(
									{
										value: value,
										translate: `t('${value}')`,
									},
									temObj
								)
							)
							dictionary.setSub(value, value)
						}
					})
					return
				}
			})
		}
	},
	function () {
		console.log('获取中文 OK')
		dictionary.save2File()
		dictionary.save2FileSub()
	}
)
